#pragma once
#include <include/eventpp/eventdispatcher.h>
#include <qbprotocol/include/SSMsgStruct.h>

#include <QEvent>
#include <string>

#include "core.h"

enum SSEventType { UserScaleChanged = QEvent::User + 1 };

static const std::string EVENT_FRAME_READY = "EVENT_FRAME_READY";
static const std::string EVENT_USERINFO_READY = "EVENT_USERINFO_READY";
static const std::string EVENT_MAINWINDOW_MOVE = "EVENT_MAINWINDOW_MOVE";
static const std::string EVENT_MESSAGE_ARRIVED = "EVENT_MESSAGE_ARRIVED";

class QWidget;
extern S_CORE_EXPORT eventpp::EventDispatcher<std::string, void()>
    normalNoArgEventDispatcher;
extern S_CORE_EXPORT eventpp::EventDispatcher<std::string, void(QWidget*)>
    widgetEventDispatcher;
extern S_CORE_EXPORT
    eventpp::EventDispatcher<std::string, void(const qb::SSAckMsg*)>
        msgEventDispatcher;